package com.itzdm.message.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.itzdm.common.result.PageResult;
import com.itzdm.message.domain.dto.MessageSendDto;
import com.itzdm.message.domain.po.Message;

import java.util.Map;


/**
 * @作者：张德明
 * @时间：2025/4/13 15:09
 */
public interface IMessageService extends IService<Message> {

    /**
     * 发送消息
     *
     * @param message 消息对象
     */
    Message sendMessage(MessageSendDto message,Long userId);


    /**
     * 获取用户所有好友的未读消息数量
     * @param userId
     * @return
     */
    Map<String, Object> getUnreadMessageCount(Long userId);

    /**
     * 标记已读
     * @param userId
     * @param friendId
     */
    void markMessagesAsRead(Long userId, Long friendId);

    void deleteMessage(Long userId, Long friendId);

    /**
     * 根据用户关联关系获取聊天消息
     * @param page 分页参数
     * @param userId 当前用户ID
     * @param friendId 好友用户ID
     * @return 分页消息记录
     */
    PageResult getChatMessagesByUserRelation(Page<Message> page, Long userId, Long friendId);
}
